Convolutional coding is a technique for error correction in a digital data link and is applicable to a wide range of digital data communication systems. While the encoding processor for convolutional coding is very simple, the processors needed for decoding are generally complex. A popular algorithm for decoding convolutionally coded data has been widely known for some time (see G. D. Forney, Jr., "The Viterbi Algorithm", Proc. IEEE, Vol. 61, pages 268-278, March 1973), but has required specialized processing hardware for each of the possible levels of quantization and code rates which may be used. Since bandwidth limited communication channels which are commonn in commercial applications require high code rates and deep space or anti-jamming applications demand low code rates, it would be desirable to have available a single processor capable of producing the branch metrics necessary for maximum-likelihood convolutional decoding at a number of different quantization levels and code rates while being economically implementable in LSI form.